﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using System.Linq;
using System.Text;

namespace SksApp.Bussiness
{
    public enum TahsilatTipi : byte
    {
        Nakit = 0,
        Cek = 2,
        Senet = 4,
        KrediKarti = 1,
        Havale = 3
    }
    public enum EvrakTipleri : byte
    {

        ToptanAlisIrsaliyesi,
        PerakendeAlisIrsaliyesi,

        ToptanAlisIadeIrsaliyesi,
        PerakendeAlisIadeIrsaliyesi,

        ToptanSatisIrsaliyesi,
        PerakendeSatisIrsaliyesi,

        ToptanSatisIadeIrsaliyesi,
        PerakendeSatisIadeIrsaliyesi,

        GelenDepoSevk,
        GidenDepoSevk,

        AlinanSiparis,
        VerilenSiparis,
        SubeSiparis,
        Sevkiyatİslemleri,

        ToptanSatisFaturasi,
        PerakendeSatisFaturasi,

        ToptanSatisIadeFaturasi,
        PerakendeSatisIadeFaturasi,

        Tahsilat,

        ToptanAlisFaturasi,
        PerakendeAlisFaturasi,
    }

    public class Mikro
    {
        string serverName = Settings.Instance.GetValue(Information.Sunucu);
        string databaseName = Settings.Instance.GetValue(Information.Veritabani);
        string userName = Settings.Instance.GetValue(Information.VtKullaniciAdi);
        string password = Settings.Instance.GetValue(Information.VtSifre);


        public byte[] EvrakCinsShar(EvrakTipleri cins)
        {
            byte[] sonuc = new byte[4];
            switch (cins)
            {
                case EvrakTipleri.ToptanAlisIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 1;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 1;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.ToptanSatisIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 1;
                    break;
                case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 1;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 1;
                    sonuc[3] = 13;
                    break;
                case EvrakTipleri.AlinanSiparis:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.VerilenSiparis:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.GidenDepoSevk:
                case EvrakTipleri.GelenDepoSevk:
                    sonuc[0] = 2;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 2;
                    break;
                case EvrakTipleri.ToptanSatisFaturasi:
                    sonuc[0] = 1;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 4;
                    break;
                case EvrakTipleri.PerakendeSatisFaturasi:
                    sonuc[0] = 1;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 4;
                    break;
                case EvrakTipleri.ToptanSatisIadeFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 1;
                    sonuc[3] = 3;
                    break;
                case EvrakTipleri.ToptanAlisFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 0;
                    sonuc[2] = 0;
                    sonuc[3] = 3;
                    break;
                case EvrakTipleri.PerakendeAlisFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 1;
                    sonuc[2] = 0;
                    sonuc[3] = 3;
                    break;
                default:
                    break;
            }
            return sonuc;
        }
        public byte[] EvrakCinsChar(EvrakTipleri cins)
        {
            byte[] sonuc = new byte[4];
            switch (cins)
            {
                case EvrakTipleri.ToptanSatisFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 63;
                    break;
                case EvrakTipleri.PerakendeSatisFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 7;
                    sonuc[2] = 0;
                    sonuc[3] = 63;
                    break;
                case EvrakTipleri.ToptanSatisIadeFaturasi:
                    sonuc[0] = 0;
                    sonuc[1] = 7;
                    sonuc[2] = 1;
                    sonuc[3] = 63;
                    break;
                case EvrakTipleri.ToptanAlisFaturasi:
                    sonuc[0] = 1;
                    sonuc[1] = 6;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                case EvrakTipleri.PerakendeAlisFaturasi:
                    sonuc[0] = 1;
                    sonuc[1] = 7;
                    sonuc[2] = 0;
                    sonuc[3] = 0;
                    break;
                default:
                    break;
            }
            return sonuc;
        }
        public void SayimSil(DateTime tarih, int evrakNo, int depoNo, SqlTransaction trn)
        {
            DbSqlServer.Get.Exec(string.Format("DELETE FROM SAYIM_SONUCLARI WHERE     (sym_tarihi = '{0}') AND (sym_depono = {1}) AND (sym_evrakno = {2})", tarih.ToSqlString(), depoNo, evrakNo), trn);
        }
        public bool SayimKaydet(DataTable dt, bool evrakSil)
        {
            if (dt.Rows.Count == 0)
                return false;

            StringBuilder sb = new StringBuilder();
            sb.Append("if exists(select sym_RECno from SAYIM_SONUCLARI where sym_tarihi= @tarih and sym_depono =@depo and sym_evrakno=@evrakno and sym_satirno=@satir)");
            sb.Append("update SAYIM_SONUCLARI set sym_SpecRECno=0,sym_iptal=0,sym_fileid=28,sym_hidden=0,sym_kilitli=0,sym_degisti=0,sym_checksum=0,sym_lastup_user=1,sym_lastup_date=@crdate,sym_special1='',sym_special2='',sym_special3='',sym_Stokkodu=@stokkodu,sym_reyonkodu='0',sym_koridorkodu='0',sym_rafkodu='0',sym_miktar1=@miktar,sym_miktar2=0,sym_miktar3=0,sym_miktar4=0,sym_miktar5=0,sym_birim_pntr=1,sym_barkod=@barkod,sym_renkno=0,sym_bedenno=0,sym_lot_no=0,sym_serino='' where sym_tarihi= @tarih and sym_depono =@depo and sym_evrakno=@evrakno and sym_satirno=@satir else ");
            sb.Append("insert into SAYIM_SONUCLARI (sym_RECid_DBCno,sym_RECid_RECno,sym_SpecRECno,sym_iptal,sym_fileid,sym_hidden,sym_kilitli,sym_degisti,sym_checksum,sym_create_user,sym_create_date,sym_lastup_user,sym_lastup_date,sym_special1,sym_special2,sym_special3,sym_tarihi,sym_depono,sym_evrakno,sym_satirno,sym_Stokkodu,sym_reyonkodu,sym_koridorkodu,sym_rafkodu,sym_miktar1,sym_miktar2,sym_miktar3,sym_miktar4,sym_miktar5,sym_birim_pntr,sym_barkod,sym_renkno,sym_bedenno,sym_parti_kodu,sym_lot_no,sym_serino) values (0,-1,0,0,28,0,0,0,0,1,@crdate,1,@crdate,'','','',@tarih,@depo,@evrakno,@satir,@stokkodu,'0','0','0',@miktar,0,0,0,0,1,@barkod,0,0,'',0,'') ");
            sb.Append(";update SAYIM_SONUCLARI set sym_RECid_RECno=sym_RECno where sym_RECid_RECno=-1");

            SqlParameter prm1 = new SqlParameter("@tarih", SqlDbType.DateTime);
            SqlParameter prm2 = new SqlParameter("@depo", SqlDbType.Int);
            SqlParameter prm3 = new SqlParameter("@evrakno", SqlDbType.Int);
            SqlParameter prm4 = new SqlParameter("@satir", SqlDbType.Int);
            SqlParameter prm5 = new SqlParameter("@crdate", SqlDbType.DateTime);
            SqlParameter prm6 = new SqlParameter("@stokkodu", SqlDbType.VarChar);
            SqlParameter prm7 = new SqlParameter("@miktar", SqlDbType.Float);
            SqlParameter prm8 = new SqlParameter("@barkod", SqlDbType.VarChar);

            SqlTransaction trn = DbSqlServer.Get.OpenTransaction();

            DateTime tarih;
            int depoNo;
            int evrakNo;

            if (evrakSil)
            {
                tarih = Convert.ToDateTime(dt.Rows[0]["tarih"]);
                evrakNo = Convert.ToInt32(dt.Rows[0]["evrak_no"]);
                depoNo = Convert.ToInt32(dt.Rows[0]["depo"]);
                SayimSil(tarih, evrakNo, depoNo, trn);
            }

            for (int i = 0; i < dt.Rows.Count; i++)
            {
                tarih = Convert.ToDateTime(dt.Rows[i]["tarih"]);
                evrakNo = Convert.ToInt32(dt.Rows[i]["evrak_no"]);
                depoNo = Convert.ToInt32(dt.Rows[i]["depo"]);
                prm1.Value = tarih;
                prm2.Value = depoNo;
                prm3.Value = evrakNo;
                prm4.Value = SayimSatirNo(tarih, evrakNo, depoNo, trn);
                prm5.Value = DateTime.Now;
                prm6.Value = dt.Rows[i]["stokkod"].ToString();
                prm7.Value = Convert.ToDecimal(dt.Rows[i]["miktar"]);
                prm8.Value = dt.Rows[i]["barkod"].ToString();

                DbSqlServer.Get.Exec(sb.ToString(), trn, prm1, prm2, prm3, prm4, prm5, prm6, prm7, prm8);
            }

            try
            {
                trn.Commit();
                return true;
            }
            catch (Exception ex)
            {
                System.Windows.Forms.MessageBox.Show(ex.Message);
                if (trn != null)
                {
                    trn.Rollback();
                    trn.Connection.Close();
                }
                return false;
            }
        }
        public int SayimSatirNo(DateTime tarih, int evrakNo, int depoNo, SqlTransaction trn)
        {
            return DbSqlServer.Get.ExecScalar<int>(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sym_satirno), 0) + 1 AS satirNo  FROM SAYIM_SONUCLARI WITH (NOLOCK) WHERE     (sym_tarihi = ''{0}'') AND (sym_depono = {1}) AND (sym_evrakno = {2})'", tarih.ToSqlString(), depoNo, evrakNo), trn);
        }
        public int SayimEvrakNo(DateTime tarih, int depoNo, SqlTransaction trn)
        {
            return DbSqlServer.Get.ExecScalar<int>(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sym_evrakno), 0) + 1 AS evrakNo  FROM SAYIM_SONUCLARI WITH (NOLOCK) WHERE     (sym_tarihi = ''{0}'') AND (sym_depono = {1})'", tarih.ToSqlString(), depoNo), trn);
        }
        public int MaxEvrakNo(EvrakTipleri tip, String seri)
        {
            byte[] dizi = this.EvrakCinsShar(tip);
            int sira = 1;
            using (Query q = new Query())
            {
                switch (tip)
                {
                    case EvrakTipleri.PerakendeAlisFaturasi:
                    case EvrakTipleri.ToptanAlisFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_evrakno_sira),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'')'", seri, 1, 0, 0));
                        break;
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_evrakno_sira),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'')'", seri, 0, 0, 63));
                        break;
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_evrakno_sira),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'')'", seri, 0, 1, 63));
                        break;
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(cha_evrakno_sira),0) + 1 FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {1}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'')'", seri, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_evrakno_sira),0) + 1 FROM         SIPARISLER WITH (NOLOCK)  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'')'", seri));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sip_evrakno_sira),0) + 1 FROM         SIPARISLER WITH (NOLOCK)  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'')'", seri));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'')'", seri));
                        break;
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT     ISNULL(MAX(sth_evrakno_sira),0) + 1 as sira  FROM         STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE  (sth_evraktip = {1}) AND (sth_evrakno_seri = ''{0}'')'", seri, dizi[3]));
                        break;
                }
                sira = q.ExecScaler<int>();
            }
            return sira;
        }
        public void BelgeNoGuncelle(EvrakTipleri tip, String seri, int sira, string belgeNo)
        {
            byte[] dizi = this.EvrakCinsShar(tip);
            using (Query q = new Query())
            {
                switch (tip)
                {
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'UPDATE       CARI_HESAP_HAREKETLERI  SET  cha_belge_tarih = ''{2}'' WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira, belgeNo));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'UPDATE       CARI_HESAP_HAREKETLERI  SET  cha_belge_tarih = ''{2}'' WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira, belgeNo));
                        break;
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'UPDATE       CARI_HESAP_HAREKETLERI  SET  cha_belge_tarih = ''{4}'' WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3], belgeNo));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'UPDATE       STOK_HAREKETLERI  SET sth_belge_no = ''{2}''  WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, belgeNo));
                        break;
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.ToptanAlisFaturasi:
                    case EvrakTipleri.PerakendeAlisFaturasi:
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'UPDATE       STOK_HAREKETLERI  SET sth_belge_no = ''{3}'' WHERE     (sth_evraktip = {2}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, dizi[3], belgeNo));
                        break;
                }
                q.Exec();
            }
        }

        public int MaxSatirNo(EvrakTipleri tip, String seri, int sira)
        {
            byte[] dizi = this.EvrakCinsShar(tip);
            int satir = 0;
            using (Query q = new Query())
            {
                switch (tip)
                {
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sip_satirno),-1) + 1 as sira  FROM SIPARISLER  WITH (NOLOCK) WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sip_satirno),-1) + 1 as sira  FROM SIPARISLER  WITH (NOLOCK) WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(cha_satir_no),-1) + 1 as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sth_satirno), -1) + 1 as sira  FROM STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05)  WHERE     (sth_tip = 2) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.ToptanAlisFaturasi:
                    case EvrakTipleri.PerakendeAlisFaturasi:
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT ISNULL(MAX(sth_satirno), -1) + 1 as sira  FROM STOK_HAREKETLERI WITH (NOLOCK, INDEX=NDX_STOK_HAREKETLERI_05) WHERE     (sth_evraktip = {2}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, dizi[3]));
                        break;
                }
                satir = q.ExecScaler<int>();
            }
            return satir;
        }
        public bool EvrakVarmi(EvrakTipleri tip, String seri, int sira)
        {
            byte[] dizi = this.EvrakCinsShar(tip);
            int satir = 0;
            using (Query q = new Query())
            {
                switch (tip)
                {
                    case EvrakTipleri.ToptanAlisFaturasi:
                    case EvrakTipleri.PerakendeAlisFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, 1, 0, 0));
                        break;
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;

                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, 0, 1, 63));
                        break;

                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, 0, 0, 63));
                        break;

                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI  WITH (NOLOCK) WHERE     (sth_tip = 2) AND (sth_cins = 6) AND (sth_normal_iade = 0) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI  WITH (NOLOCK) WHERE     (sth_tip = {2}) AND (sth_cins = {3}) AND (sth_normal_iade = {4}) AND (sth_evraktip = {5}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, dizi[0], dizi[1], dizi[2], dizi[3]));
                        break;
                }
                satir = q.ExecScaler<int>();
            }
            return Convert.ToBoolean(satir);
        }
        public bool BagliMi(EvrakTipleri tip, String seri, int sira)
        {
            byte[] dizi = this.EvrakCinsShar(tip);
            int satir = 0;
            using (Query q = new Query())
            {
                switch (tip)
                {
                    case EvrakTipleri.ToptanAlisFaturasi:
                    case EvrakTipleri.PerakendeAlisFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, 1, 0, 0));
                        break;
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sip_satirno) as sira  FROM SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;

                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, 0, 1, 63));
                        break;

                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, 0, 0, 63));
                        break;

                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(cha_satir_no) as sira  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI  WITH (NOLOCK) WHERE     (sth_tip = 2) AND (sth_cins = 6) AND (sth_normal_iade = 0) AND (sth_evraktip = 2) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'SELECT COUNT(sth_satirno) as sira  FROM STOK_HAREKETLERI WITH (NOLOCK)  WHERE     (sth_tip = {2}) AND (sth_cins = {3}) AND (sth_normal_iade = {4}) AND (sth_evraktip = {5}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1}) AND (sth_fat_recid_recno > 0)'", seri, sira, dizi[0], dizi[1], dizi[2], dizi[3]));
                        break;
                }
                satir = q.ExecScaler<int>();
            }
            return Convert.ToBoolean(satir);
        }
        public void BarkodEkle(string barkod, string stokkod, int barkodid)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("if not exists(select bar_RECid_DBCno from BARKOD_TANIMLARI where bar_kodu=@barkod) INSERT INTO BARKOD_TANIMLARI ");
            sb.Append(" (bar_RECid_DBCno,bar_RECid_RECno,bar_SpecRECno,bar_iptal,bar_fileid,bar_hidden,bar_kilitli,bar_degisti,bar_checksum,bar_create_user,bar_create_date,bar_lastup_user,bar_lastup_date,bar_special1,bar_special2,bar_special3,bar_kodu,bar_stokkodu,bar_partikodu,bar_lotno,bar_serino_veya_bagkodu,bar_barkodtipi,bar_icerigi,bar_birimpntr,bar_master,bar_bedenpntr,bar_renkpntr,bar_baglantitipi,bar_harrecid_dbcno,bar_harrecid_recno)  ");
            sb.Append(" VALUES(0,-1,0,0,15,0,0,0,0,@usr,@tarih,@usr,@tarih,N'',N'',N'',@barkod,@stokkod,N'',0,N'',0,0,@birim,0,0,0,0,0,0);update BARKOD_TANIMLARI set bar_RECid_RECno=bar_RECno where bar_RECid_RECno=-1");
            using (Query q = new Query())
            {
                q.Add(sb.ToString());
                q.Add("@usr", SqlDbType.Int, 0);
                q.Add("@tarih", SqlDbType.DateTime, DateTime.Now);
                q.Add("@barkod", SqlDbType.VarChar, barkod);
                q.Add("@stokkod", SqlDbType.VarChar, stokkod);
                q.Add("@birim", SqlDbType.TinyInt, barkodid);
                q.Exec();
            }
        }
        //private void SiparisEkle(ref HareketBilgileri row, EvrakTipleri evrakCinsi)
        //{
        //    byte[] cins = EvrakCinsShar(evrakCinsi);
        //    StringBuilder sb = new StringBuilder();
        //    sb.Append("if exists(select sip_RECno from SIPARISLER where sip_tip=@sip_tip and sip_cins=@sip_cins and sip_evrakno_seri=@sip_evrakno_seri and sip_evrakno_sira=@sip_evrakno_sira and sip_satirno=@sip_satirno )");
        //    sb.Append("update SIPARISLER set sip_SpecRECno=0,sip_iptal=0,sip_fileid=21,sip_hidden=0,sip_kilitli=0,sip_degisti=0,sip_checksum=0,sip_create_user=@sip_create_user,sip_create_date=@sip_create_date,sip_lastup_user=@sip_lastup_user,sip_lastup_date=@sip_lastup_date,sip_special1='',sip_special2='',sip_special3='',sip_firmano=0,sip_subeno=0,sip_tarih=@sip_tarih,sip_teslim_tarih=@sip_teslim_tarih,sip_belgeno=@sip_belgeno,sip_belge_tarih=@sip_belge_tarih,sip_satici_kod=@sip_satici_kod,sip_musteri_kod=@sip_musteri_kod,sip_stok_kod=@sip_stok_kod,sip_b_fiyat=@sip_b_fiyat,sip_miktar=@sip_miktar,sip_birim_pntr=@sip_birim_pntr,sip_teslim_miktar=0,sip_tutar=@sip_tutar,sip_iskonto_1=@sip_iskonto_1,sip_iskonto_2=@sip_iskonto_2,sip_iskonto_3=@sip_iskonto_3,sip_iskonto_4=@sip_iskonto_4,sip_iskonto_5=@sip_iskonto_5,sip_iskonto_6=0,sip_masraf_1=0,sip_masraf_2=0,sip_masraf_3=0,sip_masraf_4=0,sip_vergi_pntr=@sip_vergi_pntr,sip_vergi=@sip_vergi,sip_masvergi_pntr=0,sip_masvergi=0,sip_opno=0,sip_aciklama='',sip_aciklama2='',sip_depono=@sip_depono,sip_OnaylayanKulNo=0,sip_vergisiz_fl=0,sip_kapat_fl=0,sip_promosyon_fl=0,sip_cari_sormerk=@sip_cari_sormerk,sip_stok_sormerk=@sip_stok_sormerk,sip_cari_grupno=0,sip_doviz_cinsi=0,sip_doviz_kuru=1,sip_alt_doviz_kuru=1,sip_adresno=1,sip_teslimturu='',sip_cagrilabilir_fl=1,sip_prosiprecDbId=0,sip_prosiprecrecI=0,sip_iskonto1=1,sip_iskonto2=1,sip_iskonto3=1,sip_iskonto4=1,sip_iskonto5=1,sip_iskonto6=1,sip_masraf1=1,sip_masraf2=1,sip_masraf3=1,sip_masraf4=1,sip_isk1=1,sip_isk2=1,sip_isk3=1,sip_isk4=1,sip_isk5=1,sip_isk6=0,sip_mas1=0,sip_mas2=0,sip_mas3=0,sip_mas4=0,sip_Exp_Imp_Kodu='',sip_kar_orani=0,sip_durumu=0,sip_stalRecId_DBCno=0,sip_stalRecId_RECno=0,sip_planlananmiktar=0,sip_teklifRecId_DBCno=0,sip_teklifRecId_RECno=0,sip_parti_kodu='',sip_lot_no=0,sip_projekodu='',sip_fiyat_liste_no=0,sip_Otv_Pntr=0,sip_Otv_Vergi=0,sip_otvtutari=0,sip_OtvVergisiz_Fl=0,sip_paket_kod='',sip_RezRecId_DBCno=0,sip_RezRecId_RECno=0,sip_harekettipi=0,sip_yetkili_recid_dbcno=0,sip_yetkili_recid_recno=0,sip_kapatmanedenkod='',sip_opno=@vade where sip_tip='1' and sip_cins='0' and sip_evrakno_seri='SIP' and sip_evrakno_sira='1' and sip_satirno='0'  else ");
        //    sb.Append("insert into SIPARISLER (sip_RECid_DBCno,sip_RECid_RECno,sip_SpecRECno,sip_iptal,sip_fileid,sip_hidden,sip_kilitli,sip_degisti,sip_checksum,sip_create_user,sip_create_date,sip_lastup_user,sip_lastup_date,sip_special1,sip_special2,sip_special3,sip_firmano,sip_subeno,sip_tarih,sip_teslim_tarih,sip_tip,sip_cins,sip_evrakno_seri,sip_evrakno_sira,sip_satirno,sip_belgeno,sip_belge_tarih,sip_satici_kod,sip_musteri_kod,sip_stok_kod,sip_b_fiyat,sip_miktar,sip_birim_pntr,sip_teslim_miktar,sip_tutar,sip_iskonto_1,sip_iskonto_2,sip_iskonto_3,sip_iskonto_4,sip_iskonto_5,sip_iskonto_6,sip_masraf_1,sip_masraf_2,sip_masraf_3,sip_masraf_4,sip_vergi_pntr,sip_vergi,sip_masvergi_pntr,sip_masvergi,sip_opno,sip_aciklama,sip_aciklama2,sip_depono,sip_OnaylayanKulNo,sip_vergisiz_fl,sip_kapat_fl,sip_promosyon_fl,sip_cari_sormerk,sip_stok_sormerk,sip_cari_grupno,sip_doviz_cinsi,sip_doviz_kuru,sip_alt_doviz_kuru,sip_adresno,sip_teslimturu,sip_cagrilabilir_fl,sip_prosiprecDbId,sip_prosiprecrecI,sip_iskonto1,sip_iskonto2,sip_iskonto3,sip_iskonto4,sip_iskonto5,sip_iskonto6,sip_masraf1,sip_masraf2,sip_masraf3,sip_masraf4,sip_isk1,sip_isk2,sip_isk3,sip_isk4,sip_isk5,sip_isk6,sip_mas1,sip_mas2,sip_mas3,sip_mas4,sip_Exp_Imp_Kodu,sip_kar_orani,sip_durumu,sip_stalRecId_DBCno,sip_stalRecId_RECno,sip_planlananmiktar,sip_teklifRecId_DBCno,sip_teklifRecId_RECno,sip_parti_kodu,sip_lot_no,sip_projekodu,sip_fiyat_liste_no,sip_Otv_Pntr,sip_Otv_Vergi,sip_otvtutari,sip_OtvVergisiz_Fl,sip_paket_kod,sip_RezRecId_DBCno,sip_RezRecId_RECno,sip_harekettipi,sip_yetkili_recid_dbcno,sip_yetkili_recid_recno,sip_kapatmanedenkod,sip_opno) values (0,-1,0,0,21,0,0,0,0,@sip_create_user,@sip_create_date,@sip_lastup_user,@sip_lastup_date,'','','',0,0,@sip_tarih,@sip_teslim_tarih,@sip_tip,@sip_cins,@sip_evrakno_seri,@sip_evrakno_sira,@sip_satirno,@sip_belgeno,@sip_belge_tarih,@sip_satici_kod,@sip_musteri_kod,@sip_stok_kod,@sip_b_fiyat,@sip_miktar,@sip_birim_pntr,0,@sip_tutar,@sip_iskonto_1,@sip_iskonto_2,@sip_iskonto_3,@sip_iskonto_4,@sip_iskonto_5,0,0,0,0,0,@sip_vergi_pntr,@sip_vergi,0,0,0,'','',@sip_depono,0,0,0,0,@sip_cari_sormerk,@sip_stok_sormerk,0,0,1,1,1,'',1,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,'',0,0,0,0,0,0,0,'',0,'',0,0,0,0,0,'',0,0,0,0,0,'',@vade) ");
        //    sb.Append(";update SIPARISLER set sip_RECid_RECno=sip_RECno where sip_RECid_RECno=-1");

        //    using (Query q = new Query())
        //    {
        //        q.Add("@sip_tip", SqlDbType.TinyInt, cins[0]);
        //        q.Add("@sip_cins", SqlDbType.TinyInt, cins[1]);
        //        q.Add("@sip_evrakno_seri", SqlDbType.VarChar, row.Seri, 6);
        //        q.Add("@sip_evrakno_sira", SqlDbType.Int, row.Sira);
        //        q.Add("@sip_create_user", SqlDbType.VarChar, 0);
        //        q.Add("@sip_create_date", SqlDbType.DateTime, DateTime.Now);
        //        q.Add("@sip_lastup_user", SqlDbType.VarChar, 0);
        //        q.Add("@sip_lastup_date", SqlDbType.DateTime, DateTime.Now);
        //        q.Add("@sip_tarih", SqlDbType.DateTime, row.Tarih);
        //        q.Add("@sip_teslim_tarih", SqlDbType.DateTime, row.Tarih);
        //        q.Add("@sip_belgeno", SqlDbType.VarChar, row.BelgeNo);
        //        q.Add("@sip_belge_tarih", SqlDbType.DateTime, row.Tarih);
        //        q.Add("@sip_satici_kod", SqlDbType.VarChar, "", 25);
        //        q.Add("@sip_musteri_kod", SqlDbType.VarChar, row.CariKodu, 25);
        //        q.Add("@sip_depono", SqlDbType.VarChar, row.GirisDepoNo);
        //        q.Add("@sip_cari_sormerk", SqlDbType.VarChar, row.SrmMerkezKodu, 25);
        //        q.Add("@sip_stok_sormerk", SqlDbType.VarChar, row.SrmMerkezKodu, 25);
        //        q.Add("@vade", SqlDbType.Int, 0);
        //        q.Add("@sip_stok_kod", SqlDbType.VarChar, row.StokKodu, 25);
        //        q.Add("@sip_b_fiyat", SqlDbType.Float, row.Fiyat);
        //        q.Add("@sip_miktar", SqlDbType.Float, row.Miktar);
        //        q.Add("@sip_birim_pntr", SqlDbType.TinyInt, 1);
        //        q.Add("@sip_tutar", SqlDbType.Float, row.BurutTutar);
        //        q.Add("@sip_iskonto_1", SqlDbType.Float, row.Isk1Tutar);
        //        q.Add("@sip_iskonto_2", SqlDbType.Float, row.Isk2Tutar);
        //        q.Add("@sip_iskonto_3", SqlDbType.Float, row.Isk3Tutar);
        //        q.Add("@sip_iskonto_4", SqlDbType.Float, row.Isk4Tutar);
        //        q.Add("@sip_iskonto_5", SqlDbType.Float, row.Isk5Tutar);
        //        q.Add("@sip_vergi_pntr", SqlDbType.TinyInt, row.KdvSira);
        //        q.Add("@sip_vergi", SqlDbType.Float, row.KdvTutari);
        //        q.Add("@sip_satirno", SqlDbType.Int, row.Satir);
        //        q.Exec();
        //        q.Clear();

        //        q.Add("SELECT     sip_RECno FROM         SIPARISLER WHERE     (sip_tip = @sip_tip) AND (sip_cins = @sip_cins) AND (sip_evrakno_seri = @sip_evrakno_seri) AND (sip_evrakno_sira = @sip_evrakno_sira)");
        //        q.Add("@sip_tip", SqlDbType.TinyInt, cins[0]);
        //        q.Add("@sip_cins", SqlDbType.TinyInt, cins[1]);
        //        q.Add("@sip_evrakno_seri", SqlDbType.VarChar, row.Seri, 6);
        //        q.Add("@sip_evrakno_sira", SqlDbType.Int, row.Sira);
        //        var sonuc = q.ToList(new { id = -1 }).FirstOrDefault();
        //        row.Id = sonuc.id;
        //    }
        //}
        private void SharEkle(Hareket row, Evrak evr)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append(" if exists(SELECT     sth_evrakno_seri  FROM         STOK_HAREKETLERI WITH (NOLOCK)  WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip) AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" 		UPDATE STOK_HAREKETLERI SET ");
            sb.Append(" 							  sth_lastup_user=@kullanici, sth_lastup_date=@crDate, sth_tarih=@Evrak_Tarih, sth_tip=@Tip, sth_cins=@Cins, sth_normal_iade=@Normal_iade, sth_belge_tarih=@Evrak_Tarih,  ");
            sb.Append(" 							  sth_stok_kod=@Stok_kod, sth_cari_kodu=@Cari_kod, sth_plasiyer_kodu=@plasiyer, sth_kur_tarihi='1899-12-30 00:00:00', sth_miktar=@Miktar, sth_miktar2=@Miktar, sth_birim_pntr=1, sth_tutar=@yekun, sth_iskonto1=@isk1_tutar, sth_iskonto2=@isk2_tutar, sth_iskonto3=@isk3_tutar,  ");
            sb.Append(" 							  sth_iskonto4=@isk4_tutar, sth_iskonto5=@isk5_tutar, sth_vergi_pntr=@Kdv,sth_vergi=@kdv_tutar, sth_odeme_op=@odeme, sth_sip_recid_dbcno=@norm_sip_dbc, sth_sip_recid_recno=@norm_sip_rec, sth_giris_depo_no=@GirisDepo, sth_cikis_depo_no=@CikisDepo,  ");
            sb.Append(" 							  sth_malkbl_sevk_tarihi=@Evrak_Tarih, sth_cari_srm_merkezi=@srmerkez, sth_stok_srm_merkezi=@srmerkez, sth_fis_tarihi='1899-12-30 00:00:00', sth_maliyet_ana=@Fiyat, sth_maliyet_alternatif=@Fiyat, sth_maliyet_orjinal=@Fiyat, sth_vardiya_tarihi='1899-12-30 00:00:00',sth_subesip_recid_dbcno=@sube_sip_dbc,sth_subesip_recid_recno=@sube_sip_rec,sth_belge_no=@belge_no, ");
            sb.Append(" 							  sth_firmano=@firma_no,sth_subeno=@sube_no,sth_promosyon_fl = 0,sth_fiyat_liste_no = 1, sth_fis_tarihi2 = '18991230', sth_fis_sirano2 = 0, sth_rez_recid_dbcno = 0,sth_rez_recid_recno = 0, sth_fiyfark_esas_evrak_seri = N'', sth_fiyfark_esas_evrak_sira = 0, sth_fiyfark_esas_satir_no = 0, sth_optamam_recid_dbcno = 0,sth_optamam_recid_recno = 0, sth_oivtutari = 0, sth_Tevkifat_turu = 0, sth_HalKomisyonuKdv = 0, sth_iadeTlp_recid_dbcno = 0, sth_iadeTlp_recid_recno = 0, sth_HalSatisRecid_dbcno = 0, sth_HalSatisRecid_recno = 0, sth_nakliyedeposu = 0, sth_nakliyedurumu = 0, sth_ciroprim_dbcno = 0, sth_ciroprim_recno = 0, sth_yetkili_recid_dbcno = 0, sth_yetkili_recid_recno = 0, sth_taxfree_fl = 0, sth_HalRusum = 0 ");
            sb.Append(" 		WHERE     (sth_evrakno_seri = @Seri) AND (sth_evrakno_sira =@Sira) AND (sth_satirno = @Satir) AND (sth_evraktip = @Evrak_Tip AND (sth_tip=@Tip) AND (sth_cins=@Cins) and (sth_normal_iade=@Normal_iade)) ");
            sb.Append(" else ");
            sb.Append(" 		INSERT INTO STOK_HAREKETLERI ");
            sb.Append(" 		 (sth_RECid_DBCno,sth_RECid_RECno,sth_SpecRECno,sth_iptal,sth_fileid,sth_hidden,sth_kilitli,sth_degisti,sth_checksum,sth_create_user,sth_create_date,sth_lastup_user,sth_lastup_date,sth_special1,sth_special2,sth_special3,sth_firmano,sth_subeno,sth_tarih,sth_tip,sth_cins,sth_normal_iade,sth_evraktip,sth_evrakno_seri,sth_evrakno_sira,sth_satirno,sth_belge_no,sth_belge_tarih,sth_stok_kod,sth_isk_mas1,sth_isk_mas2,sth_isk_mas3,sth_isk_mas4,sth_isk_mas5,sth_isk_mas6,sth_isk_mas7,sth_isk_mas8,sth_isk_mas9,sth_isk_mas10,sth_sat_iskmas1,sth_sat_iskmas2,sth_sat_iskmas3,sth_sat_iskmas4,sth_sat_iskmas5,sth_sat_iskmas6,sth_sat_iskmas7,sth_sat_iskmas8,sth_sat_iskmas9,sth_sat_iskmas10,sth_pos_satis,sth_cari_cinsi,sth_cari_kodu,sth_cari_grup_no,sth_isemri_gider_kodu,sth_ismerkezi_kodu,sth_plasiyer_kodu,sth_kur_tarihi,sth_har_doviz_cinsi,sth_har_doviz_kuru,sth_alt_doviz_kuru,sth_stok_doviz_cinsi,sth_stok_doviz_kuru,sth_miktar,sth_miktar2,sth_birim_pntr,sth_tutar,sth_iskonto1,sth_iskonto2,sth_iskonto3,sth_iskonto4,sth_iskonto5,sth_iskonto6,sth_masraf1,sth_masraf2,sth_masraf3,sth_masraf4,sth_vergi_pntr,sth_vergi,sth_masraf_vergi_pntr,sth_masraf_vergi,sth_netagirlik,sth_odeme_op,sth_aciklama,sth_sip_recid_dbcno,sth_sip_recid_recno,sth_fat_recid_dbcno,sth_fat_recid_recno,sth_giris_depo_no,sth_cikis_depo_no,sth_malkbl_sevk_tarihi,sth_cari_srm_merkezi,sth_stok_srm_merkezi,sth_fis_tarihi,sth_fis_sirano,sth_vergisiz_fl,sth_maliyet_ana,sth_maliyet_alternatif,sth_maliyet_orjinal,sth_adres_no,sth_parti_kodu,sth_lot_no,sth_kons_recid_dbcno,sth_kons_recid_recno,sth_vardiya_tarihi,sth_vardiya_no,sth_satistipi,sth_proje_kodu,sth_ihracat_kredi_kodu,sth_exim_kodu,sth_otv_pntr,sth_otv_vergi,sth_bkm_recid_dbcno,sth_bkm_recid_recno,sth_karsikons_recid_dbcno,sth_karsikons_recid_recno,sth_iade_evrak_seri,sth_iade_evrak_sira,sth_diib_belge_no,sth_diib_satir_no,sth_mensey_ulke_tipi,sth_mensey_ulke_kodu,sth_brutagirlik,sth_halrehmiktari,sth_halrehfiyati,sth_halsandikmiktari,sth_halsandikfiyati,sth_halsandikkdvtutari,sth_disticaret_turu,sth_otvtutari,sth_otvvergisiz_fl,sth_direkt_iscilik_1,sth_direkt_iscilik_2,sth_direkt_iscilik_3,sth_direkt_iscilik_4,sth_direkt_iscilik_5,sth_genel_uretim_1,sth_genel_uretim_2,sth_genel_uretim_3,sth_genel_uretim_4,sth_genel_uretim_5,sth_yat_tes_kodu,sth_oiv_pntr,sth_oiv_vergi,sth_oivvergisiz_fl,sth_subesip_recid_dbcno,sth_subesip_recid_recno,sth_promosyon_fl, sth_fiyat_liste_no, sth_fis_tarihi2, sth_fis_sirano2, sth_rez_recid_dbcno, sth_rez_recid_recno, sth_fiyfark_esas_evrak_seri,sth_fiyfark_esas_evrak_sira, sth_fiyfark_esas_satir_no, sth_optamam_recid_dbcno, sth_optamam_recid_recno, sth_oivtutari, sth_Tevkifat_turu,sth_HalKomisyonuKdv, sth_iadeTlp_recid_dbcno, sth_iadeTlp_recid_recno, sth_HalSatisRecid_dbcno, sth_HalSatisRecid_recno, sth_nakliyedeposu,sth_nakliyedurumu, sth_ciroprim_dbcno, sth_ciroprim_recno, sth_yetkili_recid_dbcno, sth_yetkili_recid_recno, sth_taxfree_fl, sth_HalRusum) ");
            sb.Append(" 		VALUES (0,-1,0,0,16,0,0,0,0,@kullanici,@crDate,@kullanici,@crDate,'','','',@firma_no,@sube_no,@Evrak_Tarih,@Tip,@Cins,@Normal_iade,@Evrak_Tip,@Seri,@Sira,@Satir,@belge_no,@Evrak_Tarih,@Stok_kod,1,1,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,@Cari_kod,0,'','',@plasiyer,'1899-12-30 00:00:00',0,1,@dvz,0,1, @Miktar  , @Miktar  ,1, @yekun   ,@isk1_tutar,@isk2_tutar,@isk3_tutar,@isk4_tutar,@isk5_tutar,0,0,0,0,0,@Kdv,@kdv_tutar,0,0,0,@odeme,'',@norm_sip_dbc,@norm_sip_rec,0,@fat_rec,@GirisDepo,@CikisDepo,@Evrak_Tarih,@srmerkez,@srmerkez, '1899-12-30 00:00:00',0,0, @Fiyat  , @Fiyat  , @Fiyat  ,1,'',0,0,0,'1899-12-30 00:00:00',0,0,'','','',0,0,0,0,0,0,'',0,'',0,0,'',0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,'',0,0,0,@sube_sip_dbc,@sube_sip_rec,0, 1, '18991230', 0, 0, 0, N'', 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0) ");
            sb.Append(";update STOK_HAREKETLERI set sth_RECid_RECno=sth_RECno where sth_RECid_RECno=-1");

            using (Query q = new Query())
            {
                EvrakTipleri evrakCinsi = ((EvrakTipleri)evr.EvrakCinsi);
                q.Add(sb.ToString());
                byte[] tipCins = EvrakCinsShar(evrakCinsi);
                q.Add("@Tip", SqlDbType.Int, tipCins[0]);
                q.Add("@Cins", SqlDbType.Int, tipCins[1]);
                q.Add("@Normal_iade", SqlDbType.Int, tipCins[2]);
                q.Add("@Evrak_Tip", SqlDbType.Int, tipCins[3]);
                q.Add("@Evrak_Tarih", SqlDbType.DateTime, new DateTime(evr.Tarih.Year, evr.Tarih.Month, evr.Tarih.Day));
                q.Add("@Seri", SqlDbType.VarChar, evr.Seri);
                q.Add("@Sira", SqlDbType.Int, evr.Sira);
                q.Add("@Satir", SqlDbType.Int, evr);
                q.Add("@Stok_kod", SqlDbType.VarChar, row.StokKodu);
                q.Add("@Cari_kod", SqlDbType.VarChar, evr.CariKodu);
                q.Add("@Miktar", SqlDbType.Decimal, row.Miktar);
                q.Add("@GirisDepo", SqlDbType.Int, row.GirisDepoNo);
                q.Add("@CikisDepo", SqlDbType.Int, row.CikisDepoNo);
                q.Add("@fat_rec", SqlDbType.Int, evr.RecNo);
                q.Add("@odeme", SqlDbType.Int, row.Vade); //odeme * (-1));
                q.Add("@plasiyer", SqlDbType.VarChar, "", 25);
                q.Add("@srmerkez", SqlDbType.VarChar, Settings.Instance.GetValue(Information.SrmMerkezKodu));
                q.Add("@kullanici", SqlDbType.VarChar, "0");
                q.Add("@yekun", SqlDbType.Decimal, row.BurutTutar);
                q.Add("@isk1_tutar", SqlDbType.Decimal, row.Isk1Tutar);
                q.Add("@isk2_tutar", SqlDbType.Decimal, row.Isk2Tutar);
                q.Add("@isk3_tutar", SqlDbType.Decimal, row.Isk3Tutar);
                q.Add("@isk4_tutar", SqlDbType.Decimal, row.Isk4Tutar);
                q.Add("@isk5_tutar", SqlDbType.Decimal, row.Isk5Tutar);
                q.Add("@Kdv", SqlDbType.Int, row.KdvSira);
                q.Add("@crDate", SqlDbType.DateTime, DateTime.Now);
                q.Add("@dvz", SqlDbType.Float, 1);

                if (evrakCinsi == EvrakTipleri.GelenDepoSevk || evrakCinsi == EvrakTipleri.GidenDepoSevk)
                {
                    q.Add("@sube_sip_rec", SqlDbType.Int, row.SipRecNo);
                    q.Add("@sube_sip_dbc", SqlDbType.Int, row.SipDbcNo);
                    q.Add("@norm_sip_rec", SqlDbType.Int, 0);
                    q.Add("@norm_sip_dbc", SqlDbType.Int, 0);
                }
                else
                {
                    q.Add("@sube_sip_rec", SqlDbType.Int, 0);
                    q.Add("@sube_sip_dbc", SqlDbType.Int, 0);
                    q.Add("@norm_sip_rec", SqlDbType.Int, row.SipRecNo);
                    q.Add("@norm_sip_dbc", SqlDbType.Int, row.SipDbcNo);
                }

                q.Add("@Fiyat", SqlDbType.Decimal, row.Fiyat);
                q.Add("@belge_no", SqlDbType.VarChar, evr.BelgeNo, 25);
                q.Add("@firma_no", SqlDbType.Int, 0);
                q.Add("@sube_no", SqlDbType.Int, 0);
                q.Add("@kdv_tutar", SqlDbType.Float, row.KdvTutari);
                q.Exec();
                q.Clear();

                if (row.SipRecNo > 0)
                {
                    StringBuilder sbsql = new StringBuilder();
                    sbsql.AppendLine(" declare ");
                    sbsql.AppendLine(" @sipMiktari float, ");
                    sbsql.AppendLine(" @teslimMiktari float ");
                    sbsql.AppendLine(" if exists(SELECT  * from SIPARISLER  WHERE (sip_RECno = @sipRecNo)) ");
                    sbsql.AppendLine(" begin ");
                    sbsql.AppendLine(" SELECT  @teslimMiktari=sip_teslim_miktar,@sipMiktari=sip_miktar from  SIPARISLER  WHERE (sip_RECno = @sipRecNo) ");
                    sbsql.AppendLine(" if @teslimMiktari is null set @teslimMiktari=0 ");
                    sbsql.AppendLine(" if @teslimMiktari + @karsilananMiktar >= @sipMiktari ");
                    sbsql.AppendLine(" 	UPDATE     SIPARISLER  SET sip_kapat_fl = 1, sip_teslim_miktar =  @teslimMiktari + @karsilananMiktar WHERE        (sip_RECno = @sipRecNo) ");
                    sbsql.AppendLine(" else ");
                    sbsql.AppendLine(" 	UPDATE     SIPARISLER  SET sip_kapat_fl = 0, sip_teslim_miktar =  @teslimMiktari + @karsilananMiktar WHERE        (sip_RECno = @sipRecNo) ");
                    sbsql.AppendLine(" end ");

                    q.Clear();
                    q.Add(sbsql.ToString());
                    q.Add("@karsilananMiktar", SqlDbType.Float, row.Miktar);
                    q.Add("@sipRecNo", SqlDbType.Int, row.SipRecNo);
                    q.Exec();
                    q.Clear();
                }

                //q.Add("SELECT     sth_RECno  FROM         STOK_HAREKETLERI WITH (NOLOCK)  WHERE     (sth_tip = @tip) AND (sth_cins = @cins) AND (sth_normal_iade = @normIade) AND (sth_evraktip = @evrTip) AND (sth_evrakno_seri = @seri) AND (sth_evrakno_sira = @sira) AND (sth_satirno = @satir)");
                //q.Add("@tip", SqlDbType.TinyInt, tipCins[0]);
                //q.Add("@cins", SqlDbType.TinyInt, tipCins[1]);
                //q.Add("@normIade", SqlDbType.TinyInt, tipCins[2]);
                //q.Add("@evrTip", SqlDbType.TinyInt, tipCins[3]);
                //q.Add("@seri", SqlDbType.VarChar, row.Seri, 6);
                //q.Add("@sira", SqlDbType.Int, row.Sira);
                //q.Add("@satir", SqlDbType.Int, row.Satir);
                //var sonuc = q.ToList(new { id = 0 }).FirstOrDefault();
                //row.Id = sonuc.id;
            }
        }
        public void SharSil(int sharId)
        {
            using (Query q = new Query())
            {
                q.Add("DELETE FROM STOK_HAREKETLERI  WHERE     (sth_RECno = @shar_id)");
                q.Add("@shar_id", SqlDbType.Int, sharId);
                q.Exec();
            }
        }
        public void EvrakSil(EvrakTipleri tip, String seri, int sira, byte harTip, byte harCins, byte normalIade, byte evrTip)
        {
            byte[] dizi = new byte[4];
            dizi[0] = harTip;
            dizi[1] = harCins;
            dizi[2] = normalIade;
            dizi[3] = evrTip;

            using (Query q = new Query())
            {
                switch (tip)
                {
                    case EvrakTipleri.AlinanSiparis:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM SIPARISLER  WHERE     (sip_tip = 0) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.VerilenSiparis:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM SIPARISLER  WHERE     (sip_tip = 1) AND (sip_cins = 0) AND (sip_evrakno_seri = ''{0}'') AND (sip_evrakno_sira={1})'", seri, sira));
                        break;
                    case EvrakTipleri.PerakendeSatisIadeFaturasi:
                    case EvrakTipleri.PerakendeSatisFaturasi:
                    case EvrakTipleri.ToptanSatisFaturasi:
                    case EvrakTipleri.ToptanSatisIadeFaturasi:
                    case EvrakTipleri.Tahsilat:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_tip = {0}) AND (cha_normal_Iade = {2}) AND (cha_evrak_tip = {3}) AND (cha_evrakno_seri = ''{0}'') AND (cha_evrakno_sira={1})'", seri, sira, dizi[0], dizi[2], dizi[3]));
                        break;
                    case EvrakTipleri.GidenDepoSevk:
                    case EvrakTipleri.GelenDepoSevk:
                    case EvrakTipleri.PerakendeAlisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeAlisIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIadeIrsaliyesi:
                    case EvrakTipleri.PerakendeSatisIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanAlisIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIadeIrsaliyesi:
                    case EvrakTipleri.ToptanSatisIrsaliyesi:
                        q.Add(string.Format("exec sp_executesql N'DELETE  FROM STOK_HAREKETLERI WITH (NOLOCK)  WHERE     (sth_tip = {2}) AND (sth_cins = {3}) AND (sth_normal_iade = {4}) AND (sth_evraktip = {5}) AND (sth_evrakno_seri = ''{0}'') AND (sth_evrakno_sira={1})'", seri, sira, dizi[0], dizi[1], dizi[2], dizi[3]));
                        break;
                }
                q.Exec();
            }
        }

        public bool EvrakEkle(Evrak evrak, Hareket[] rows)
        {
            bool sonuc = false;
            if (evrak != null)
            {
                using (Query q = new Query())
                {
                    SqlTransaction trn = DbSqlServer.Get.OpenTransaction();

                    #region Satış faturası Kaydı
                    decimal[] vergiTutarlari = null;
                    decimal meblag = 0;
                    decimal aratoplam = 0;
                    decimal isk1 = 0, isk2 = 0, isk3 = 0, isk4 = 0, isk5 = 0;
                    int vade = 0;
                    int recID = 0;
                    decimal iskontotoplam = 0;
                    vergiTutarlari = new decimal[10];
                    foreach (var r in rows)
                    {
                        isk1 += r.Isk1Tutar;
                        isk2 += r.Isk2Tutar;
                        isk3 += r.Isk3Tutar;
                        isk4 += r.Isk4Tutar;
                        isk5 += r.Isk5Tutar;

                        iskontotoplam = (r.Isk1Tutar + r.Isk2Tutar + r.Isk3Tutar + r.Isk4Tutar + r.Isk5Tutar);
                        vade = r.Vade;

                        aratoplam += r.BurutTutar;
                        meblag += (r.BurutTutar + r.KdvTutari - iskontotoplam);
                        vergiTutarlari[r.KdvSira] += r.KdvTutari;
                    }

                    EvrakTipleri EvrakCinsi = (EvrakTipleri)evrak.EvrakCinsi;

                    if (EvrakCinsi == EvrakTipleri.ToptanSatisFaturasi)
                    {
                        recID = CharEkle(evrak.Seri, evrak.Sira, 0, evrak.Tarih, meblag, vergiTutarlari, "", evrak.CariKodu, aratoplam, evrak.BelgeNo, vade, "", isk1, isk2, isk3, isk4, isk5, 0, "", Settings.Instance.GetValue(Information.SrmMerkezKodu), "", 0, trn, EvrakCinsi);
                    }

                    int satir = 0;
                    foreach (Hareket r in rows)
                    {
                        Hareket row = r;
                        r.Satir = satir;
                        SharEkle(row, evrak);
                        satir++;
                    }

                    #endregion

                    try
                    {
                        trn.Commit();
                        sonuc = true;
                    }
                    catch (Exception)
                    {
                        if (trn != null)
                            trn.Rollback();
                    }
                }
            }
            return sonuc;
        }
        private int CharEkle(string evrakSeri, int evrakSira, int satir, DateTime evrakTarihi, decimal meblag, decimal[] vergiler, string saticiKodu, string cariKodu, decimal araToplam, string belgeNo, int vade, string aciklama, decimal isk1Tutar, decimal isk2Tutar, decimal isk3Tutar, decimal isk4Tutar, decimal isk5Tutar, int cariCins, string kasaKodu, string srmMerkezi, string projeKodu, int kdvSira, SqlTransaction trn, EvrakTipleri evrakTipi)
        {
            string sqlStr = "if exists(SELECT     cha_RECno FROM         CARI_HESAP_HAREKETLERI WITH (NOLOCK) WHERE     (cha_evrak_tip = @cha_evrak_tip) AND (cha_evrakno_seri = @cha_evrakno_seri) AND (cha_evrakno_sira = @cha_evrakno_sira) AND (cha_satir_no = @cha_satir_no)) delete FROM CARI_HESAP_HAREKETLERI WHERE     (cha_evrak_tip = @cha_evrak_tip) AND (cha_evrakno_seri = @cha_evrakno_seri) AND (cha_evrakno_sira = @cha_evrakno_sira) AND (cha_satir_no = @cha_satir_no);insert into CARI_HESAP_HAREKETLERI (cha_RECid_DBCno,cha_RECid_RECno,cha_SpecRecNo,cha_iptal,cha_fileid,cha_hidden,cha_kilitli,cha_degisti,cha_CheckSum,cha_create_user,cha_create_date,cha_lastup_user,cha_lastup_date,cha_special1,cha_special2,cha_special3,cha_firmano,cha_subeno,cha_tarihi,cha_tip,cha_cinsi,cha_normal_Iade,cha_evrak_tip,cha_satir_no,cha_evrakno_seri,cha_evrakno_sira,cha_belge_no,cha_belge_tarih,cha_cari_cins,cha_kod,cha_kasa_hizmet,cha_kasa_hizkod,cha_d_kurtar,cha_d_cins,cha_d_kur,cha_altd_kur,cha_grupno,cha_meblag,cha_vade,cha_fis_tarih,cha_fis_sirano,cha_ft_iskonto1,cha_ft_iskonto2,cha_ft_iskonto3,cha_ft_iskonto4,cha_ft_iskonto5,cha_ft_iskonto6,cha_ft_masraf1,cha_ft_masraf2,cha_ft_masraf3,cha_ft_masraf4,cha_vergi1,cha_vergi2,cha_vergi3,cha_vergi4,cha_vergi5,cha_vergi6,cha_vergi7,cha_vergi8,cha_vergi9,cha_vergi10,cha_yuvarlama,cha_tpoz,cha_aciklama,cha_trefno,cha_sntck_poz,cha_karsidcinsi,cha_karsid_kur,cha_karsidgrupno,cha_srmrkkodu,cha_reftarihi,cha_odeme_arr1,cha_odeme_arr2,cha_odeme_arr3,cha_odeme_arr4,cha_odeme_arr5,cha_odeme_arr6,cha_odeme_arr7,cha_odeme_arr8,cha_miktari,cha_aratoplam,cha_vergipntr,cha_istisnakodu,cha_ver_tev_carpani,cha_stopaj,cha_savsandesfonu,cha_vergisiz_fl,cha_satici_kodu,cha_mustahsil_borsa,cha_mustahsil_bagkur,cha_mustahsil_diger,cha_HalMSDF,cha_HalHamaliye,cha_HalStopaj,cha_HalKomisyonu,cha_StFonPntr,cha_pos_hareketi,cha_vardiya_tarihi,cha_vardiya_no,cha_vardiya_evrak_ti,cha_HalRusum,cha_HalNavlunTut,cha_HalRehinFuture,cha_HalKomisyon,cha_Vade_Farki_Yuz,cha_karsisrmrkkodu,cha_EXIMkodu,cha_HalRehinSandikmiktari,cha_HalSandikVrMiktar,cha_HalSandikTutari,cha_HalSandikKDVTutari,cha_HalrehinSandikTutari,cha_Tevkifat_turu,cha_ticaret_turu,cha_otvtutari,cha_otvvergisiz_fl,cha_projekodu,cha_sozlesme_DBCno,cha_sozlesme_RECno,cha_yat_tes_kodu,cha_ciro_cari_kodu,cha_oivergisiz_fl,cha_meblag_ana_doviz_icin_gecersiz_fl,cha_meblag_alt_doviz_icin_gecersiz_fl,cha_meblag_orj_doviz_icin_gecersiz_fl,cha_ciroprim_DBCno,cha_ciroprim_RECno,cha_HalHamaliyeKdv,cha_HalHamaliyeVergisiz_fl,cha_bakimhar_DBCno, cha_bakimhar_RECno, cha_avanstalep_DBCno, cha_avanstalep_RECno, cha_oiv_pntr, cha_oiv_vergi, cha_oivtutari, cha_isk_mas1,cha_isk_mas2, cha_isk_mas3, cha_isk_mas4, cha_isk_mas5, cha_isk_mas6, cha_isk_mas7, cha_isk_mas8, cha_isk_mas9, cha_isk_mas10, cha_sat_iskmas1, cha_sat_iskmas2, cha_sat_iskmas3, cha_sat_iskmas4, cha_sat_iskmas5, cha_sat_iskmas6, cha_sat_iskmas7, cha_sat_iskmas8, cha_sat_iskmas9, cha_sat_iskmas10, cha_sip_recid_dbcno, cha_sip_recid_recno, cha_gidkatsoz_recid_dbcno, cha_gidkatsoz_recid_recno, cha_tevkifat1Yok, cha_tevkifat131, cha_tevkifat191, cha_tevkifat121, cha_tevkifat132, cha_tevkifat161, cha_tevkifat145, cha_tevkifat1Tam, cha_tevkifat1102, cha_tevkifat1105, cha_tevkifat1107, cha_tevkifat2Yok, cha_tevkifat231, cha_tevkifat291, cha_tevkifat221, cha_tevkifat232, cha_tevkifat261, cha_tevkifat245, cha_tevkifat2Tam, cha_tevkifat2102, cha_tevkifat2105, cha_tevkifat2107, cha_tevkifat3Yok, cha_tevkifat331, cha_tevkifat391, cha_tevkifat321, cha_tevkifat332, cha_tevkifat361, cha_tevkifat345, cha_tevkifat3Tam, cha_tevkifat3102, cha_tevkifat3105, cha_tevkifat3107, cha_tevkifat4Yok, cha_tevkifat431, cha_tevkifat491, cha_tevkifat421, cha_tevkifat432, cha_tevkifat461, cha_tevkifat445, cha_tevkifat4Tam, cha_tevkifat4102, cha_tevkifat4105, cha_tevkifat4107, cha_tevkifat5Yok, cha_tevkifat531, cha_tevkifat591, cha_tevkifat521, cha_tevkifat532, cha_tevkifat561, cha_tevkifat545, cha_tevkifat5Tam, cha_tevkifat5105, cha_tevkifat5102, cha_tevkifat5107, cha_tevkifat6Yok, cha_tevkifat631, cha_tevkifat691, cha_tevkifat621, cha_tevkifat632, cha_tevkifat661, cha_tevkifat645, cha_tevkifat6Tam, cha_tevkifat6102, cha_tevkifat6105, cha_tevkifat6107, cha_tevkifat7Yok, cha_tevkifat731, cha_tevkifat791, cha_tevkifat721, cha_tevkifat732, cha_tevkifat761, cha_tevkifat745, cha_tevkifat7Tam, cha_tevkifat7102, cha_tevkifat7105, cha_tevkifat7107, cha_tevkifat8Yok, cha_tevkifat831, cha_tevkifat891, cha_tevkifat821, cha_tevkifat832, cha_tevkifat861, cha_tevkifat845, cha_tevkifat8Tam, cha_tevkifat8102, cha_tevkifat8105, cha_tevkifat8107, cha_tevkifat9Yok, cha_tevkifat931, cha_tevkifat991, cha_tevkifat921, cha_tevkifat932, cha_tevkifat961, cha_tevkifat945, cha_tevkifat9Tam, cha_tevkifat9102, cha_tevkifat9105, cha_tevkifat9107, cha_tevkifat10Yok, cha_tevkifat1031, cha_tevkifat1091, cha_tevkifat1021, cha_tevkifat1032, cha_tevkifat1061, cha_tevkifat1045, cha_tevkifat10Tam, cha_tevkifat10102, cha_tevkifat10105, cha_tevkifat10107, cha_HalRusumKdv, cha_HalDiger, cha_HalDigerKdv, cha_HalDigerVergisiz_fl, cha_HalrusumVergisiz_fl, cha_Halrusumsuz_fl) values (@cha_RECid_DBCno,@cha_RECid_RECno,@cha_SpecRecNo,@cha_iptal,@cha_fileid,@cha_hidden,@cha_kilitli,@cha_degisti,@cha_CheckSum,@cha_create_user,@cha_create_date,@cha_lastup_user,@cha_lastup_date,@cha_special1,@cha_special2,@cha_special3,@cha_firmano,@cha_subeno,@cha_tarihi,@cha_tip,@cha_cinsi,@cha_normal_Iade,@cha_evrak_tip,@cha_satir_no,@cha_evrakno_seri,@cha_evrakno_sira,@cha_belge_no,@cha_belge_tarih,@cha_cari_cins,@cha_kod,@cha_kasa_hizmet,@cha_kasa_hizkod,@cha_d_kurtar,@cha_d_cins,@cha_d_kur,@cha_altd_kur,@cha_grupno,@cha_meblag,@cha_vade,@cha_fis_tarih,@cha_fis_sirano,@cha_ft_iskonto1,@cha_ft_iskonto2,@cha_ft_iskonto3,@cha_ft_iskonto4,@cha_ft_iskonto5,@cha_ft_iskonto6,@cha_ft_masraf1,@cha_ft_masraf2,@cha_ft_masraf3,@cha_ft_masraf4,@cha_vergi1,@cha_vergi2,@cha_vergi3,@cha_vergi4,@cha_vergi5,@cha_vergi6,@cha_vergi7,@cha_vergi8,@cha_vergi9,@cha_vergi10,@cha_yuvarlama,@cha_tpoz,@cha_aciklama,@cha_trefno,@cha_sntck_poz,@cha_karsidcinsi,@cha_karsid_kur,@cha_karsidgrupno,@cha_srmrkkodu,@cha_reftarihi,@cha_odeme_arr1,@cha_odeme_arr2,@cha_odeme_arr3,@cha_odeme_arr4,@cha_odeme_arr5,@cha_odeme_arr6,@cha_odeme_arr7,@cha_odeme_arr8,@cha_miktari,@cha_aratoplam,@cha_vergipntr,@cha_istisnakodu,@cha_ver_tev_carpani,@cha_stopaj,@cha_savsandesfonu,@cha_vergisiz_fl,@cha_satici_kodu,@cha_mustahsil_borsa,@cha_mustahsil_bagkur,@cha_mustahsil_diger,@cha_HalMSDF,@cha_HalHamaliye,@cha_HalStopaj,@cha_HalKomisyonu,@cha_StFonPntr,@cha_pos_hareketi,@cha_vardiya_tarihi,@cha_vardiya_no,@cha_vardiya_evrak_ti,@cha_HalRusum,@cha_HalNavlunTut,@cha_HalRehinFuture,@cha_HalKomisyon,@cha_Vade_Farki_Yuz,@cha_karsisrmrkkodu,@cha_EXIMkodu,@cha_HalRehinSandikmiktari,@cha_HalSandikVrMiktar,@cha_HalSandikTutari,@cha_HalSandikKDVTutari,@cha_HalrehinSandikTutari,@cha_Tevkifat_turu,@cha_ticaret_turu,@cha_otvtutari,@cha_otvvergisiz_fl,@cha_projekodu,@cha_sozlesme_DBCno,@cha_sozlesme_RECno,@cha_yat_tes_kodu,@cha_ciro_cari_kodu,@cha_oivergisiz_fl,@cha_meblag_ana_doviz_icin_gecersiz_fl,@cha_meblag_alt_doviz_icin_gecersiz_fl,@cha_meblag_orj_doviz_icin_gecersiz_fl,@cha_ciroprim_DBCno,@cha_ciroprim_RECno,@cha_HalHamaliyeKdv,@cha_HalHamaliyeVergisiz_fl,0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);SELECT SCOPE_IDENTITY()";
            List<SqlParameter> prmList = new List<SqlParameter>();
            byte[] tipler = EvrakCinsChar(evrakTipi);

            prmList.Add(new SqlParameter() { ParameterName = "@cha_RECid_DBCno", SqlDbType = SqlDbType.SmallInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_RECid_RECno", SqlDbType = SqlDbType.Int, Value = -1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_SpecRecNo", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_iptal", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fileid", SqlDbType = SqlDbType.SmallInt, Value = 51 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_hidden", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kilitli", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_degisti", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_CheckSum", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_create_user", SqlDbType = SqlDbType.SmallInt, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_create_date", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_lastup_user", SqlDbType = SqlDbType.SmallInt, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_lastup_date", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special1", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special2", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_special3", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_firmano", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_subeno", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_tarihi", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi.RemoveTime() });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_tip", SqlDbType = SqlDbType.TinyInt, Value = tipler[0] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_cinsi", SqlDbType = SqlDbType.TinyInt, Value = tipler[1] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_normal_Iade", SqlDbType = SqlDbType.TinyInt, Value = tipler[2] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrak_tip", SqlDbType = SqlDbType.TinyInt, Value = tipler[3] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_satir_no", SqlDbType = SqlDbType.Int, Value = satir });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrakno_seri", SqlDbType = SqlDbType.NVarChar, Value = evrakSeri });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_evrakno_sira", SqlDbType = SqlDbType.Int, Value = evrakSira });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_belge_no", SqlDbType = SqlDbType.NVarChar, Value = belgeNo });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_belge_tarih", SqlDbType = SqlDbType.DateTime, Value = evrakTarihi.RemoveTime() });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_cari_cins", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kod", SqlDbType = SqlDbType.NVarChar, Value = cariKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizmet", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_kasa_hizkod", SqlDbType = SqlDbType.NVarChar, Value = kasaKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_kurtar", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_cins", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_d_kur", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_altd_kur", SqlDbType = SqlDbType.Float, Value = 1 });

            if (cariCins == 2)
            {
                prmList.Add(new SqlParameter() { ParameterName = "@cha_grupno", SqlDbType = SqlDbType.TinyInt, Value = 1 });
            }
            else
            {
                prmList.Add(new SqlParameter() { ParameterName = "@cha_grupno", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            }

            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag", SqlDbType = SqlDbType.Float, Value = meblag });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vade", SqlDbType = SqlDbType.Int, Value = vade });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fis_tarih", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_fis_sirano", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto1", SqlDbType = SqlDbType.Float, Value = isk1Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto2", SqlDbType = SqlDbType.Float, Value = isk2Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto3", SqlDbType = SqlDbType.Float, Value = isk3Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto4", SqlDbType = SqlDbType.Float, Value = isk4Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto5", SqlDbType = SqlDbType.Float, Value = isk5Tutar });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_iskonto6", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf1", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf2", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf3", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ft_masraf4", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi1", SqlDbType = SqlDbType.Float, Value = vergiler[0] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi2", SqlDbType = SqlDbType.Float, Value = vergiler[1] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi3", SqlDbType = SqlDbType.Float, Value = vergiler[2] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi4", SqlDbType = SqlDbType.Float, Value = vergiler[3] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi5", SqlDbType = SqlDbType.Float, Value = vergiler[4] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi6", SqlDbType = SqlDbType.Float, Value = vergiler[5] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi7", SqlDbType = SqlDbType.Float, Value = vergiler[6] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi8", SqlDbType = SqlDbType.Float, Value = vergiler[7] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi9", SqlDbType = SqlDbType.Float, Value = vergiler[8] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergi10", SqlDbType = SqlDbType.Float, Value = vergiler[9] });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_yuvarlama", SqlDbType = SqlDbType.Float, Value = 0 });

            if (cariCins == 4)
                prmList.Add(new SqlParameter() { ParameterName = "@cha_tpoz", SqlDbType = SqlDbType.TinyInt, Value = 1 });
            else
                prmList.Add(new SqlParameter() { ParameterName = "@cha_tpoz", SqlDbType = SqlDbType.TinyInt, Value = 0 });

            prmList.Add(new SqlParameter() { ParameterName = "@cha_aciklama", SqlDbType = SqlDbType.NVarChar, Value = aciklama });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_trefno", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_sntck_poz", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsidcinsi", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsid_kur", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsidgrupno", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_srmrkkodu", SqlDbType = SqlDbType.NVarChar, Value = srmMerkezi });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_reftarihi", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr1", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr2", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr3", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr4", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr5", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr6", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr7", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_odeme_arr8", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_miktari", SqlDbType = SqlDbType.Float, Value = 1 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_aratoplam", SqlDbType = SqlDbType.Float, Value = araToplam });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergipntr", SqlDbType = SqlDbType.TinyInt, Value = kdvSira });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_istisnakodu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ver_tev_carpani", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_stopaj", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_savsandesfonu", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_satici_kodu", SqlDbType = SqlDbType.NVarChar, Value = saticiKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_mustahsil_borsa", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_mustahsil_bagkur", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_mustahsil_diger", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalMSDF", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalHamaliye", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalStopaj", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalKomisyonu", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_StFonPntr", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_pos_hareketi", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_tarihi", SqlDbType = SqlDbType.DateTime, Value = "1899-12-30 00:00:00" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_no", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_vardiya_evrak_ti", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalRusum", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalNavlunTut", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalRehinFuture", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalKomisyon", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_Vade_Farki_Yuz", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_karsisrmrkkodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_EXIMkodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalRehinSandikmiktari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalSandikVrMiktar", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalSandikTutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalSandikKDVTutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalrehinSandikTutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_Tevkifat_turu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ticaret_turu", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_otvtutari", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_otvvergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_projekodu", SqlDbType = SqlDbType.NVarChar, Value = projeKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_sozlesme_DBCno", SqlDbType = SqlDbType.SmallInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_sozlesme_RECno", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_yat_tes_kodu", SqlDbType = SqlDbType.NVarChar, Value = "" });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ciro_cari_kodu", SqlDbType = SqlDbType.NVarChar, Value = cariKodu });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_oivergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_ana_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_alt_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_meblag_orj_doviz_icin_gecersiz_fl", SqlDbType = SqlDbType.TinyInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ciroprim_DBCno", SqlDbType = SqlDbType.SmallInt, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_ciroprim_RECno", SqlDbType = SqlDbType.Int, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalHamaliyeKdv", SqlDbType = SqlDbType.Float, Value = 0 });
            prmList.Add(new SqlParameter() { ParameterName = "@cha_HalHamaliyeVergisiz_fl", SqlDbType = SqlDbType.Bit, Value = false });

            int sonuc = -1;

            using (SqlCommand cmd = new SqlCommand(sqlStr, trn.Connection))
            {
                cmd.Transaction = trn;
                foreach (var item in prmList)
                {
                    cmd.Parameters.Add(item);
                }
                object recid = cmd.ExecuteScalar();
                if (recid != null)
                {
                    cmd.Parameters.Clear();
                    cmd.CommandText = string.Format("UPDATE CARI_HESAP_HAREKETLERI SET cha_RECid_RECno=cha_RECno WHERE cha_RECno={0}", recid.ToString());
                    cmd.ExecuteNonQuery();
                    sonuc = Convert.ToInt32(recid);
                }
            }
            return sonuc;
        }

    }
}
